package com.lavender.distributed.id.id;

import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.IdUtil;

import java.util.Date;

/**
 * <p>
 * snow flake雪花算法
 * 实现参考：https://hutool.cn/docs/#/core/%E5%B7%A5%E5%85%B7%E7%B1%BB/%E5%94%AF%E4%B8%80ID%E5%B7%A5%E5%85%B7-IdUtil?id=%e4%bd%bf%e7%94%a8
 *
 * 分布式id作为DB分库分表时的主键。
 * </p>
 *
 * @author: zhu.chen
 * @date: 2021/1/20
 * @version: v1.0.0
 */
public class SnowFlakeTest {

    public static void main(String[] args) {
        Snowflake snowflake = IdUtil.getSnowflake(1, 1);
        Long id = snowflake.nextId();
        // id : 1351855693178736640
        System.out.println("id : " + id);

        Long dateTime = snowflake.getGenerateDateTime(id);
        Date date = new Date(dateTime);
        System.out.println("生成id的时间 : " + date);
    }

}
